#ifndef DATAFLOW_DETAIL_NODEOUTPUTLINKDESCRIPTOR_H
#define DATAFLOW_DETAIL_NODEOUTPUTLINKDESCRIPTOR_H

#include "NodeLinkDescriptor.h"

namespace DataFlow
{

namespace Detail
{

class Node;

class NodeOutputLinkDescriptor : public NodeLinkDescriptor
{
	public:

		typedef NodeLinkDescriptor       BaseType;
		typedef NodeOutputLinkDescriptor ThisType;

		NodeOutputLinkDescriptor(void) : tn(0) { ; }

		NodeOutputLinkDescriptor(int sourcePort, Node * targetNode, int targetPort, int capacity)
			: tn(0)
		{
			this->setup(sourcePort, targetNode, targetPort, capacity);
		}

		void   setTargetNode (Node * n)       { this->tn = n;    }
		Node * targetNode    (void)     const { return this->tn; }

		void setup(int sourcePort, Node * targetNode, int targetPort, int capacity)
		{
			this->setTargetNode(targetNode);
			BaseType::setup(sourcePort, targetPort, capacity);
		}

	protected:

		Node * tn;
};

}

}

#endif // DATAFLOW_DETAIL_NODEOUTPUTLINKDESCRIPTOR_H
